package com.aizuda.boot.modules.business.performancePlan.service;

import com.aizuda.boot.modules.business.performancePlan.dto.CollectionPlanGroupResponseDTO;
import com.aizuda.boot.modules.business.performancePlan.dto.CreateCollectionPlanDTO;
import com.aizuda.boot.modules.business.performancePlan.entity.CollectionPlanEntity;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * 收款计划 Service 接口
 */
public interface CollectionPlanService extends IService<CollectionPlanEntity> {

    /**
     * 根据合同ID查询收款计划列表
     *
     * @param contractId 合同ID
     * @return 收款计划列表
     */
    List<CollectionPlanEntity> getByContractId(Integer contractId);

    /**
     * 根据合同ID删除收款计划
     *
     * @param contractId 合同ID
     * @return 是否删除成功
     */
    boolean deleteByContractId(Integer contractId);

    /**
     * 根据计划组ID查询收款计划列表
     *
     * @param planGroupId 计划组ID
     * @return 收款计划列表
     */
    List<CollectionPlanEntity> getByPlanGroupId(Integer planGroupId);



    /**
     * 更新收款计划
     *
     * @param collectionPlan 收款计划
     * @return 是否更新成功
     */
    boolean updateCollectionPlan(CollectionPlanEntity collectionPlan);

    /**
     * 创建收款计划
     *
     * @param createCollectionPlanDTO 创建收款计划请求
     * @return 是否创建成功
     */
    boolean createCollectionPlan(CreateCollectionPlanDTO createCollectionPlanDTO);

    /**
     * 获取收款计划详情（按计划组分类）
     *
     * @param contractId 合同ID
     * @return 收款计划详情列表
     */
    List<CollectionPlanGroupResponseDTO> getCollectionPlanDetail(Integer contractId);
}
